
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.sql.SQLClientInfoException;
import java.util.Vector;


public class DentistaDAO extends Base{
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public DentistaDAO(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    
    
    /*
    * Método que monta a query e chama o buscarProximoID na classe Base.
    * e retorna pra classe ClinicaController o id ja incrementado, ClinicaController
    * só retorna para o frm_clinicas.
    */
    public int buscar_ProximoID(String id_tabela){
        conectarBanco();
        String sql;
        sql = "SELECT MAX("+id_tabela+") FROM tb_dentista;";
        System.out.println(sql);
        return buscarProximoID(sql,id_tabela);
    }
    /*
     * Método para busca do id através do nome
     * de uma clinica passada por parametro.
     */
    public int buscarID_Clinica(String nome_clinica,String campo){
        conectarBanco();
        String sql;
        sql = "SELECT id_clinica FROM tb_clinica WHERE nome = '"+nome_clinica+"';";
        return buscarID(sql,campo);
    }
    
     /*
     * Método para busca o id de um registro na tabela
     * passando a linha por parametro.
     */
    public int buscarID_Tabelas(int linha,int coluna){
        conectarBanco();
        String id = String.valueOf(frm_dentistas.jt_dentistas.getValueAt(linha, coluna));
        return Integer.parseInt(id);
    }
    
    
    /*
   * Método que monta a query para cadastro de clinicas
   */
    public boolean cadastrarDentista(Dentista dentista) {
        conectarBanco();
        String sql;
        
        sql = "INSERT INTO tb_dentista (id_clinica,nome,cpf,cnpj,email,telefone,celular,endereco"
                + ",numero, apto, uf, cidade,bairro) values('"+dentista.getID_Clinica()+"','"+dentista.getNome()+"','"+dentista.getCpf()+"','"+dentista.getCnpj()+"','"+dentista.getEmail()+"','"+dentista.getTelefone()+"',"
                + "'"+dentista.getCelular()+"','"+dentista.getEndereco()+"','"+dentista.getNumero()+"','"+dentista.getApto()+"','"+dentista.getUf()+"','"+dentista.getCidade()+"','"+dentista.getBairro()+"');";
        
        return cadastrar(sql);
    }
    /*
     * Método que monta a query para cada tipo de pesquisa
     * de dentistas apartir do tipo de pesquisa e valor a serem pesquisados.    
     */
    public Vector<Dentista> buscarDentistas(String filtrar_por,String pesquisar){
        Vector<Dentista> vector = new Vector<Dentista>();
        Vector<Dentista> list = new Vector<Dentista>();
        String sql;
        try{
            conectarBanco();
            if(filtrar_por.equals("Código")){
                sql = "SELECT * FROM tb_dentista WHERE id_dentista = '"+pesquisar+"';";
            }
            else if(filtrar_por.equals("Nome")){
                sql = "SELECT * FROM tb_dentista WHERE nome LIKE '%"+pesquisar+"%';";
            }
            else{
                sql = "SELECT * FROM tb_dentista;";
            }

            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    Dentista dentista = new Dentista();
                    dentista.setID_Dentista(rs.getInt("id_dentista"));
                    dentista.setID_Clinica(rs.getInt("id_clinica"));
                    dentista.setNome(rs.getString("nome"));
                    dentista.setNomeClinica(buscarNomeClinica(dentista.getID_Clinica()));
                    dentista.setCpf(rs.getString("cpf"));
                    dentista.setCnpj(rs.getString("cnpj"));
                    dentista.setEmail(rs.getString("email"));
                    dentista.setTelefone(rs.getString("telefone"));
                    dentista.setCelular(rs.getString("celular"));
                    dentista.setEndereco(rs.getString("endereco"));
                    dentista.setNumero(rs.getString("numero"));
                    dentista.setApto(rs.getString("apto"));
                    dentista.setUf(rs.getString("uf"));
                    dentista.setCidade(rs.getString("cidade"));
                    dentista.setBairro(rs.getString("bairro"));

                    list.add(dentista);
                }
                return list;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    } 
    /*
     * Método para editarDentista em seus campos.
     */
    public Vector<Dentista> editarDentista(Dentista dentista){
        Vector<Dentista> vector = new Vector<Dentista>();
        Vector<Dentista> list = new Vector<Dentista>();
        try{
            conectarBanco();
            String sql;
            sql = "SELECT * FROM tb_dentista WHERE id_dentista = "+dentista.getID_Dentista()+";";
    //        vector = buscarDentistas(sql);
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);

            if (rs != null) {
                while (rs.next()) {
                    dentista.setID_Dentista(rs.getInt("id_dentista"));
                    dentista.setID_Clinica(rs.getInt("id_clinica"));
                    dentista.setNome(rs.getString("nome"));
                    dentista.setNomeClinica(buscarNomeClinica(dentista.getID_Clinica()));
                    dentista.setCpf(rs.getString("cpf"));
                    dentista.setCnpj(rs.getString("cnpj"));
                    dentista.setEmail(rs.getString("email"));
                    dentista.setTelefone(rs.getString("telefone"));
                    dentista.setCelular(rs.getString("celular"));
                    dentista.setEndereco(rs.getString("endereco"));
                    dentista.setNumero(rs.getString("numero"));
                    dentista.setApto(rs.getString("apto"));
                    dentista.setUf(rs.getString("uf"));
                    dentista.setCidade(rs.getString("cidade"));
                    dentista.setBairro(rs.getString("bairro"));

                    list.add(dentista);
                }
                return list;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
        
    } 
    /*
     * Método que recebe o objeto clinica e monta a query para 
     * alteração dos campos.
     */
    public boolean alterarDentista(Dentista dentista){
        conectarBanco();
        String sql;
        sql = "UPDATE tb_dentista SET id_clinica = '"+dentista.getID_Clinica()+"',nome='"+dentista.getNome()+"', cpf = '"+dentista.getCpf()+"', cnpj='"+dentista.getCnpj()+"', email='"+dentista.getEmail()+"', telefone='"+dentista.getTelefone()+"', celular='"+dentista.getCelular()+"',"
                    + "endereco='"+dentista.getEndereco()+"',numero='"+dentista.getNumero()+"',apto='"+dentista.getApto()+"',uf='"+dentista.getUf()+"',cidade='"+dentista.getCidade()+"',bairro='"+dentista.getBairro()+"'WHERE id_dentista = "+dentista.getID_Dentista()+";";
        
        try {
            Statement st = (Statement) c.createStatement();
            st.executeUpdate(sql);
        } catch (Exception e) {
            System.out.println(e);
            return false;
        }
        return true;
    }
    
    /*
     * Método que monta a query para listar clinicas em um combobox.
     */
    public void listarDentistasCombo(){ 
        conectarBanco();
        try {
            String sql;
            sql = "SELECT nome FROM tb_dentista;";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()) {
                frm_pacientes.cb_dentista.addItem(rs.getString("nome"));
            }
        } catch (Exception e) {}
    }
    
    public String buscarNomeClinica(int id_clinica){
        try 
        {
            String sql;
            sql="select nome from tb_clinica where id_clinica = " + id_clinica + ";";
            Statement st = (Statement) c.createStatement();
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()) {
                return rs.getString("nome");
            }
        } catch (Exception e) {}
        return null; 
    }
    
     //</editor-fold>
}
